package testes;

import static org.junit.Assert.*;
import iscte.es.copaPaises.businessLayer.Campeonato;
import iscte.es.copaPaises.businessLayer.FaseCampeonato;
import iscte.es.copaPaises.businessLayer.Grupo;
import iscte.es.copaPaises.businessLayer.Jogo;
import iscte.es.copaPaises.businessLayer.Pais;

import java.util.HashSet;
import java.util.Set;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class GrupoTest {
	private Grupo g;
	private String designacao;
	private FaseCampeonato fase;
	private Campeonato campeonato;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		g=new Grupo();
		designacao="quartos final";
		fase=FaseCampeonato.valueOf("QuartosFinal");
		campeonato=new Campeonato();
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testGrupo() {
		assertTrue("Grupo()",Grupo.allInstances.contains(g));
	}

	@Test
	public void testGrupoStringFaseCampeonatoCampeonato() {
		g=new Grupo(designacao,fase,campeonato);
		assertTrue("Grupo(designacao,fase,campeonato)",Grupo.allInstances.contains(g));
	}

	@Test
	public void testDesignacao() {
		g.setDesignacao(designacao);
		assertEquals("Setter/Getter Grupo.designacao()",g.designacao(),designacao);
	}

	@Test
	public void testFase() {
		g.setFase(fase);
		assertEquals("Setter/Getter Grupo.fase()",g.fase(),fase);
		
	}

	@Test
	public void testCampeonato() {
		g.setCampeonato(campeonato);
		assertEquals("Setter/Getter Grupo.campeonato()",g.campeonato(),campeonato);
	}

	@Test
	public void testJogos() {
		Jogo j1=new Jogo();
		Jogo j2=new Jogo();
		Set<Jogo> jogos=new HashSet<Jogo>();
		jogos.add(j1);
		jogos.add(j2);
		g.setJogos(jogos);
		assertEquals("Setter/Getter Grupo.jogos()",g.jogos(),jogos);
		}


	@Test
	public void testPaises() {
		Pais p1=new Pais();
		Pais p2=new Pais();
		Set<Pais> paises=new HashSet<Pais>();
		paises.add(p1);
		paises.add(p2);
		g.setPaises(paises);
		assertEquals("Setter/Getter Grupo.paises()",g.paises(),paises);
		}

	@Test
	public void testInicializa() {
		Pais p1=new Pais();
		Pais p2=new Pais();
		Set<Pais> paises=new HashSet<Pais>();
		paises.add(p1);
		paises.add(p2);
		g.inicializa(designacao, fase, paises);
		assertEquals("Grupo.inicializa(designacao, fase, paises)",g.designacao(),designacao);
		assertEquals("Grupo.inicializa(designacao, fase, paises)",g.fase(),fase);
		assertEquals("Grupo.inicializa(designacao, fase, paises)",g.paises(),paises);
	}

	@Test
	public void testToString() {
		g=new Grupo(designacao,fase,campeonato);
		assertEquals("Grupo.toString()",g.toString(),"Grupo [designacao=" + designacao + ", fase=" + fase + ", campeonato=" + campeonato + "]\n");
	}

}
